2020年12月24日 | Leave a comment https://blog.csdn.net/menggudaoke/article/details/77884674 近期项目中需要通过Spring-Cloud调用其他project的REST接口,不管是delete、put、post或get,都可以调试成功,但是到patch方式发送请求就无法访问: 如果开启了熔断器,需要去掉调用,因为,熔断器会把你的真正的异常给覆盖掉,不管你什么异常,熔断器一般会给你提示请求超时之类的异常。 超时异常如: com.netflix.hystrix.exception.HystrixRuntimeException: update timed-out and no fallback available. 去掉熔断器之后的真正的异常为: feign.RetryableException: Invalid HTTP <span class="hljs-function"><span class="hljs-keyword">method</span>:</span> PATCH executing PATCH http:<span class="hljs-comment">//agent-info/agents/0123456748</span> ... Caused <span class="hljs-keyword">by</span>: java.net.ProtocolException: Invalid HTTP <span class="hljs-function"><span class="hljs-keyword">method</span>:</span> PATCH at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:<span class="hljs-number">440</span>) 1234 feign.RetryableException: Invalid HTTP <span class="hljs-function"><span class="hljs-keyword">method</span>:</span> PATCH executing PATCH http:<span class="hljs-comment">//agent-info/agents/0123456748</span>...Caused <span class="hljs-keyword">by</span>: java.net.ProtocolException: Invalid HTTP <span class="hljs-function"><span class="hljs-keyword">method</span>:</span> PATCH at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:<span class="hljs-number">440</span>) 1 2 3 4 … 这个问题是因为java.net.HttpURLConnection.setRequestMethod 不支持PATCH方法,无法将请求发送出去。 解决办法:HttpClient 支持PATCH方法,加入HttpClient依赖即可解决。注:如果添加了依赖还不成功,去你的maven库中看看依赖的jar包有没有下载下来,我第一次用了Netflix的包,就没下载成功。 添加下面的依赖: <dependency> <!-- Required to use PATCH --> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> <version>${feign.version}</version> </dependency 123456 <dependency> <!-- Required to use PATCH --> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> <version>${feign.version}</version></dependency